package cn.wolfcode.trip.api.controller;

import cn.wolfcode.trip.base.domain.Great;
import cn.wolfcode.trip.base.service.IGreatService;
import cn.wolfcode.trip.base.util.JsonResult;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("great")
public class GreatController {

    @Autowired
    private IGreatService greatService;

    /**
     * 添加点赞的接口
     * 1.资源 /great
     * 2.请求方式 get
     * 3.请求参数 travelContentId
     * 4.返回结果 点赞人数
     */
    @GetMapping("getCountByTravelContentId/{travelContentId}")
    public Map getCountByTravelContentId(@PathVariable Long travelContentId){
        Map map = new HashMap<>();
        int count = greatService.getCountByTravelContentId(travelContentId);
        map.put("count",count);
        return map;
    }
    /**
     * 添加查询点赞对象的接口
     * 1.资源 /great
     * 2.请求方式 get
     * 3.请求参数  travelContentId user.id
     * 4.返回结果 great对象
     */
    @GetMapping("selectByUserIdAndTravelContentId/{travelContentId}/{userId}")
    public JsonResult selectByUserIdAndTravelContentId(@PathVariable Long travelContentId, @PathVariable Long userId){
        JsonResult json=new JsonResult();

        Great great = greatService.selectByUserIdAndTravelContentId(travelContentId, userId);
        if(great==null){
            json.mark("没有点过赞");
        }
        return json;

    }
    /**
     * 添加点赞对象的接口
     * 1.资源 /great
     * 2.请求方式 post
     * 3.请求参数  travelContentId user.id
     * 4.返回结果 JsonResult
     */
    @PostMapping("{travelId}/{userId}")
    public JsonResult saveGreat(Great great){
        greatService.insert(great);
        return new JsonResult();
    }
    /**
     * 删除点赞对象的接口
     * 1.资源 /great
     * 2.请求方式 delete
     * 3.请求参数  travelContentId user.id
     * 4.返回结果 JsonResult
     */
    @PostMapping("deleteRelation/{travelContentId}/{userId}")
    public JsonResult deleteRelation(@PathVariable Long travelContentId, @PathVariable Long userId){
        greatService.deleteRelation(travelContentId,userId);
        greatService.insertDeleteRelation(travelContentId,userId);
        return new JsonResult();
    }
    /**
     * 得到点赞记录的接口
     * 1.资源 /great/getGoodsContent/{userId}
     * 2.请求方式 get
     * 3.请求参数  userId  这个id是写游记的作者id,不是点赞人的id
     * 4.返回结果
     */
    @GetMapping("getGoodsContent/{userId}")
    public List<Map> getGoodsContent(@PathVariable Long userId){

        return greatService.getGoodsContent(userId);
    }
    /**
     * 删除点赞对象的接口
     * 1.资源 /great
     * 2.请求方式 get
     * 3.请求参数  userId  这个id是写游记的作者id,不是点赞人的id
     * 4.返回结果 map集合
     */
    @GetMapping("getDeleteGoods/{userId}")
    public List<Map> getDeleteGoods(@PathVariable Long userId){

        return greatService.getDeleteGoods(userId);
    }

    /**
     * 删除点赞对象的接口
     * 1.资源 /great
     * 2.请求方式 get
     * 3.请求参数  userId  这个id是写游记的作者id,不是点赞人的id
     * 4.返回结果
     */
    @GetMapping("getReadCount/{userId}")
    public int getReadCount(@PathVariable Long userId){

        int count1=greatService.getDeleteCount(userId);
        int count2=greatService.getGoodCount(userId);

        return count1+count2;
    }
    /**
     * 更改点赞状态的接口
     * 1.资源 /great
     * 2.请求方式 get
     * 3.请求参数  userId  这个id是写游记的作者id,不是点赞人的id
     * 4.返回结果
     */
    @PostMapping("updateState/{userId}")
    public JsonResult updateState(@PathVariable Long userId){

        greatService.updateDeleteStateById(userId);
        greatService.updateGoodsStateById(userId);
        return new JsonResult();
    }
}
